#pragma once

#include <math.h>

#include "Vec3.h"

namespace sm
{
	class Quat
	{
	private:
	public:
		float s;
		Vec3 v;

		Quat();
		Quat(float s, float x, float y, float z);

		void Set(float s, float x, float y, float z);

		Quat operator + (Quat q);
		Quat operator - (Quat q);
		Quat operator * (Quat q);
		Quat operator * (float s);

		Quat GetCoupleQuat();
		float GetLength();
		void Normalize();
		void RotateToQuat(float a, Vec3 v);
		void RotateToQuat(float a, float x, float y, float z);
		void QuatToRotate(float &a, Vec3 &v);
		Vec3 Rotate(Vec3 v);
	};
}